#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int GetLuckNum(vector<int>& num, int n, int pos, int sum, int mul)
{
    int retNum = 0;
    // 从pos位置开始计算
    for(int i = pos; i < n; ++i){
        sum += num[i];
        mul *= num[i];
        if(sum > mul)  //如果满足幸运条件
            // 口袋数加1，继续看下一个位置是否满足
            retNum += 1 + GetLuckNum(num, n, i+1, sum, mul);
        else if(num[i] == 1)
            // 下一个位置可能满足，继续递归
            retNum += GetLuckNum(num, n, i+1, sum, mul);
        else
            break;  // 不满足 回退
        // 回溯
        sum -= num[i];
        mul /= num[i];
        // 去重
        while(i < n-1 && num[i] == num[i+1])
            ++i;
    }
    
    return retNum;
}

int main()
{
    int n;
    cin >> n;
    vector<int> num(n);
    for(int i = 0; i < n; ++i)
        cin >> num[i];
    sort(num.begin(), num.end());  // 1. 排序
    cout << GetLuckNum(num, n, 0, 0, 1);
}